#include <math.h>
#include <GL/glfw.h>

  void Draw( void )
  {
      int    width, height;  // Window dimensions
      double t;              // Time (in seconds)
 // Get current time
      t = glfwGetTime();
      // Get window size
      glfwGetWindowSize( &width, &height );

      // Make sure that height is non-zero to avoid division by zero
      height = height < 1 ? 1 : height;

      // Set viewport
      glViewport( 0, 0, width, height );

      // Clear color and depht buffers
      glClearColor( 0.0f, 0.0f, 0.0f, 0.0f );
      glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );

      // Set up projection matrix
      glMatrixMode( GL_PROJECTION );    // Select projection matrix
      glLoadIdentity();                 // Start with an identity matrix
      gluPerspective(                   // Set perspective view
          65.0,                         // Field of view = 65 degrees
          (double)width/(double)height, // Window aspect (assumes square pixels)
          1.0,                          // Near Z clipping plane
          100.0                         // Far Z clippling plane
      );

      // Set up modelview matrix
      glMatrixMode( GL_MODELVIEW );     // Select modelview matrix
      glLoadIdentity();                 // Start with an identity matrix
      gluLookAt(                        // Set camera position and orientation
          0.0, 0.0, 10.0,               // Camera position (x,y,z)
          0.0, 0.0, 0.0,                // View point (x,y,z)
          0.0, 1.0, 0.0                 // Up-vector (x,y,z)
      );
      // Let us draw a triangle!
      glBegin( GL_TRIANGLES );          // Tell OpenGL that we want to draw a triangle
      glVertex3f( -5.0f, -4.0f, 0.0f ); // First corner of the triangle
      glVertex3f(  5.0f, -4.0f, 0.0f ); // Second corner of the triangle
      glVertex3f(  0.0f,  4.5f, 0.0f ); // Third corner of the triangle
      glEnd();                          // No more triangles...
      // Here is where actual OpenGL rendering calls would begin...
  }

int glfwTest () {
      int    ok;             // Flag telling if the window was opened
      int    running;        // Flag telling if the program is running
      // Initialize GLFW
      glfwInit();

      // Open window
      ok = glfwOpenWindow(
          640, 480,          // Width and height of window
          8, 8, 8,           // Number of red, green, and blue bits for color buffer
          8,                 // Number of bits for alpha buffer
          16,                // Number of bits for depth buffer (Z-buffer)
          0,                 // Number of bits for stencil buffer
          GLFW_FULLSCREEN      // We want a desktop window (could be GLFW_FULLSCREEN)
      );

      // If we could not open a window, exit now
      if( !ok )
      {
          glfwTerminate();
          return 0;
      }

      // Set window title
      glfwSetWindowTitle( "My OpenGL program" );

      // Enable sticky keys
      glfwEnable( GLFW_STICKY_KEYS );

      // Main rendering loop
      do
      {
          // Call our rendering function
          Draw();

          // Swap front and back buffers (we use a double buffered display)
          glfwSwapBuffers();

          // Check if the escape key was pressed, or if the window was closed
          running = !glfwGetKey( GLFW_KEY_ESC ) &&
                    glfwGetWindowParam( GLFW_OPENED );
      }
      while( running );

      // Terminate GLFW
      glfwTerminate();

      // Exit program
      return 0 ;


}
